/**
 * Created by xmqian on 2025/2/13.
 */

fun main(arrgs : Array<String>){
    main()
}

fun foo() {
    listOf(1, 2, 3, 4, 5).forEach forEach@{
        if (it == 3) return@forEach // 局部返回到该 lambda 表达式的调用者——forEach 循环，同名的forEach@可以省略
        println(it)
    }
    println(" done with explicit label")
}
//sampleEnd

fun foo1() :Int{
    run loop@{
        listOf(1, 2, 3, 4, 5).forEach {
            if (it == 3) return@loop 1 // 从传入 run 的 lambda 表达式非局部返回
            print(it)
        }
    }
    print(" done with nested loop")
    return 2
}

open class Rectangle {
    open fun draw() { println("Drawing a rectangle") }
    val borderColor: String get() = "black"
}

//sampleStart
class FilledRectangle: Rectangle() {
    override fun draw() {
        val filler = Filler()
        filler.drawAndFill()
    }

    inner class Filler {
        fun fill() { println("Filling") }
        fun drawAndFill() {
            super@FilledRectangle.draw() // 调用 Rectangle 的 draw() 实现
            fill()
            println("Drawn a filled rectangle with color ${super@FilledRectangle.borderColor}") // 使用 Rectangle 所实现的 borderColor 的 get()
        }
    }
}

fun main() {
//    foo()
//    println(foo1())

    val fr = FilledRectangle()
    fr.draw()
}